﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Collections.ObjectModel;
using System.Data;
using System.Collections;
using Model;

namespace DataBase.Miembro2
{
    public class BDMiembro
    {
        static string conexion = "Data Source=JCIDatabase.db.10200093.hostedresource.com; Initial Catalog=JCIDatabase; User ID=JCIDatabase; Password='ucbJCI2012!'";
        public static ICollection DevolverTodos()
        {
            try
            {
                SqlConnection canal = new SqlConnection(conexion);
                SqlDataAdapter comando = new SqlDataAdapter();
                comando.SelectCommand = new SqlCommand("Select * From [Miembro] where Estado=@si",canal);
                comando.SelectCommand.Parameters.AddWithValue("si", "si");
                canal.Open();
                
                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("CI", typeof(long)));
                dt.Columns.Add(new DataColumn("Nombre", typeof(String)));
                dt.Columns.Add(new DataColumn("ApellidoPaterno", typeof(String)));
                dt.Columns.Add(new DataColumn("ApellidoMaterno", typeof(String)));
                dt.Columns.Add(new DataColumn("Cargo", typeof(String)));
                dt.Columns.Add(new DataColumn("Estado", typeof(String)));
                

                comando.Fill(dt);
                dt.Columns.Add(new DataColumn("vara", typeof(bool)));
                foreach (DataRow item in dt.Rows)
                {
                    if (item["Estado"].ToString()=="si")
                    {
                        item["vara"] = true;
                    }
                    else
                    {
                        item["vara"] = false;
                    }
                }
                DataView dv = new DataView(dt);
                return dv;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static Miembroo DevolverMiembroPorUsuario(string username)
        {
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(conexion);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT CI,Nombre,Cargo,ApellidoMaterno,ApellidoPaterno FROM Miembro WHERE NombreUsuario=@nomUser";
                cmd.Parameters.AddWithValue("nomUser", username);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }
                Miembroo nuevo = new Miembroo();
                if (reader.Read())
                {
                    nuevo.CI = Convert.ToInt64(reader["CI"]);
                    nuevo.Nombre = reader["Nombre"].ToString();
                    nuevo.ApellidoMaterno = reader["ApellidoMaterno"].ToString();
                    nuevo.ApellidoPaterno = reader["ApellidoPaterno"].ToString();
                    nuevo.Cargo = reader["Cargo"].ToString();
                }
                return nuevo;
            }
            catch (SqlException ex)
            {

                throw new Exception("Error al obtener un miembro", ex);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                SqlConnection.ClearAllPools();
            }
        }
        public static Miembroo DevolverMiembroPorCargo(string username)
        {
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(conexion);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT CI,Nombre,Cargo,ApellidoMaterno,ApellidoPaterno FROM Miembro WHERE Cargo=@cargo";
                cmd.Parameters.AddWithValue("cargo", username);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }
                Miembroo nuevo = new Miembroo();
                if (reader.Read())
                {
                    nuevo.CI = Convert.ToInt64(reader["CI"]);
                    nuevo.Nombre = reader["Nombre"].ToString();
                    nuevo.ApellidoMaterno = reader["ApellidoMaterno"].ToString();
                    nuevo.ApellidoPaterno = reader["ApellidoPaterno"].ToString();
                    nuevo.Cargo = reader["Cargo"].ToString();
                }
                return nuevo;
            }
            catch (SqlException ex)
            {

                throw new Exception("Error al obtener un miembro", ex);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                SqlConnection.ClearAllPools();
            }
        }
        public static Miembroo DevolverMiembroPorCi(long ci)
        {
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(conexion);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT CI,Nombre,Cargo,ApellidoMaterno,ApellidoPaterno FROM Miembro WHERE CI=@ci";
                cmd.Parameters.AddWithValue("ci", ci);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }
                Miembroo nuevo = new Miembroo();
                if (reader.Read())
                {
                    nuevo.CI = Convert.ToInt64(reader["CI"]);
                    nuevo.Nombre = reader["Nombre"].ToString();
                    nuevo.ApellidoMaterno = reader["ApellidoMaterno"].ToString();
                    nuevo.ApellidoPaterno = reader["ApellidoPaterno"].ToString();
                    nuevo.Cargo = reader["Cargo"].ToString();
                }
                return nuevo;
            }
            catch (SqlException ex)
            {

                throw new Exception("Error al obtener un miembro", ex);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                SqlConnection.ClearAllPools();
            }
        }
    }
}
